Erlang VM
的,其广为人知的特点是运行低延时、分布式、可容错的系统,并成功用于 Web 开发与嵌入式软件领域。
Elixir v1.18 是一个令人印象深刻的版本,它改进了 Elixir 生态系统中目前正在进行的两项主要工作:集合论类型和语言服务器。它还带有内置的 JSON 支持,并为其单元测试库添加了新功能。
Elixir 现在提供 Inspect
协议的可派生实现。 简而言之,这意味着无论何时检查数据结构中的数据都非常容易。 例如,假设您有一个包含安全和隐私敏感信息的用户结构:
defmodule User do defstruct [:id, :name, :age, :email, :encrypted_password] end
默认情况下,如果您通过 Elixir inspect(用户)
检查用户,它将包括所有字段。 这可能导致诸如 :email
和 :encrypted_password
等字段出现在日志,错误报告等中。您可以始终为此类情况定义Inspect 协议的自定义实现,但 Elixir v1.11 通过允许您派生 Inspect 使其更简单 协议:
defmodule User do @derive {Inspect, only: [:id, :name, :age]} defstruct [:id, :name, :age, :email, :encrypted_password] end
现在 Elixir 所有用户结构都将打印,其余所有字段都已折叠:
#User<id: 1, name: "Jane", age: 33, ...>
您还可以传递 @derive {Inspect, except: [...]}
,以防您希望默认保留所有字段并仅排除部分字段。
从 Elixir V1.11 开始,增加了 is_struct/2
、is_exception/1
和 is_exception/2
守护支持。它还增加了对 map.field
防护中语法的支持。
在 Elixir v1.17 中,将集合论类型引入到少数语言构造中。虽然我们前面还有许多步骤,但这一重要里程碑已经以针对常见错误的新警告的形式为开发人员带来了好处。此新版本还增加了对 Erlang/OTP 27(最新和最好的 Erlang 版本)的支持。您还会发现一种新的日历相关数据类型 Duration
和 Date.shift / 2
函数。
在 Elixir v1.16 中,Elixir 还在编译器引发的异常和诊断中包含代码片段,包括支持终端上的 ANSI 着色。例如,语法错误现在包含指向错误发生位置的指针:
** (SyntaxError) invalid syntax found on lib/my_app.ex:1:17: error: syntax error before: '*' │ 1 │ [1, 2, 3, 4, 5, *] │ ^ │ └─ lib/my_app.ex:1:17
对于不匹配的分隔符,它现在显示两个分隔符:
** (MismatchedDelimiterError) mismatched delimiter found on lib/my_app.ex:1:18: error: unexpected token: ) │ 1 │ [1, 2, 3, 4, 5, 6) │ │ └ mismatched closing delimiter (expected "]") │ └ unclosed delimiter │ └─ lib/my_app.ex:1:18
更多详见 Elixir 官网。
Elixir v1.15 发布
Elixir v1.15 是一个较小的版本,重点改进了编译和启动时间。 此版本还完成了与 Erlang / OTP 记录器的集成过程,带来了开箱即用的日志轮换和压缩等新功能。